package com.xiongwei.prototype.deepclone;

/**
 * 引用类型
 * @author XiongWei
 * @date 2023/12/20
 */
public class DeepCloneableTarget implements Cloneable {

    private String cloneName;

    private String cloneClass;

    public DeepCloneableTarget(String cloneName, String cloneClass) {
        this.cloneName = cloneName;
        this.cloneClass = cloneClass;
    }

    /**
     * 因为该类的属性都是String,String本身没有实现Cloneable接口,故无法克隆,只能传递引用.在调用clone方法后,克隆对象开始也是指向原来的引用地址,
     * 但是一旦String的值发生变化(String是不可更改类,在new赋值时会创建一个新对象)就改变了克隆对象指向的地址,让它指向一个新的String地址,不会影响原来的指向和值
     * 这样String在拷贝时就表现出深拷贝的特点
     */
    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
}
